package demo1;

import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContextExtensionsKt;

import java.lang.reflect.Method;

public class Demo {
    public static void main(String[] args) throws Exception {
        //需求：调用Person的sayhello方法

        //1:实例化Person调用sayhello
        /*
           优点：简介明恋
           缺点：代码写死了，如果后面随着业务变换，则需要修改代码
         */
        Person person = new Person();
        person.sayhello();

        /*
           反射机制
           优点：动态调用，避免写死
           缺点：编写大量反射代码
         */
        Class cls = Class.forName("demo1.Person");
        Object obj = cls.newInstance();
        Method m = cls.getMethod("sayhello");
        m.invoke(obj);

        /*
           3：通过Spring容器管理对象，并从中获取我们需要的对象
         */
        AnnotationConfigApplicationContext context =
                new AnnotationConfigApplicationContext("demo1");
        Person person1 = context.getBean(Person.class);
        person1.sayhello();



















    }
}
